2024年4月2日
Jerry
1628
2024年4月2日
在 Lua 中,当你将一个表(table)赋值给另一个变量时,实际上是将表的引用(reference)赋给了新的变量,而不是复制表的内容。这意味着,原始表和新的变量都指向同一个表对象。因此,如果你修改了原始表,新的变量也会反映出这些修改,因为它们实际上是同一个表的引用。
下面是一个示例来说明这一点:
local a = {1, 2, 3}
local b = a
a[1] = 10
print(a[1]) -- 输出: 10
print(b[1]) -- 输出: 10
在这个示例中,我们将表 {1, 2, 3}
赋值给变量 a
。然后,我们将变量 a
的值赋给变量 b
。在之后,我们修改了表 a
的第一个元素为 10。由于 a
和 b
实际上引用同一个表对象,所以修改表 a
会影响到变量 b
,因此 b[1]
也变成了 10。
如果你希望复制表的内容而不是引用,可以使用 table.clone
函数或者其他方式来进行深拷贝。下面是一个使用 table.clone
函数的示例:
local a = {1, 2, 3}
local b = table.clone(a)
a[1] = 10
print(a[1]) -- 输出: 10
print(b[1]) -- 输出: 1
在这个示例中,我们使用 table.clone
函数来创建一个表 b
,它是表 a
的深拷贝。对表 a
的修改不会影响到表 b
,因为它们是两个独立的表对象。
原创文章,转载请注明出处:
https://jerrycoding.com/article/lua-table-copy
《学习笔记》
0
微信
![jerry微信赞助](https://cdn.jerrycoding.com/media/pay/wxpay2.png)
支付宝
![jerry支付宝赞助](https://cdn.jerrycoding.com/media/pay/alipay.png)